#include <algorithm>
#include <lru.hpp>
#include <macros.hpp>
#include <optional>
#include <tuple>
#include <vector>

int main(int argc, char* argv[]) {
    std::vector<std::tuple<std::string, int, int>> input1 = {
        {"put", 1, 1},  {"put", 2, 2},  {"get", 1, -1},
        {"put", 3, 3},  {"get", 2, -1}, {"put", 4, 4},
        {"get", 1, -1}, {"get", 3, -1}, {"get", 4, -1}};
    answer(2, input1, true);

    std::cout << std::endl;

    std::vector<std::tuple<std::string, int, int>> input2 = {
        {"put", 2, 1}, {"put", 2, 2}, {"get", 2, -1},
        {"put", 1, 1}, {"put", 4, 1}, {"get", 2, -1}};

    answer(2, input2, true);

    std::cout << std::endl;

    std::vector<std::tuple<std::string, int, int>> input3 = {
        {"put", 2, 1}, {"put", 1, 1},  {"put", 2, 3},
        {"put", 4, 1}, {"get", 1, -1}, {"get", 2, -1}};
    answer(2, input3, true);
}